import java.util.Random;

//实现多线程数组求和
public class Demo1 {
    private static int sum1 = 0;
    private static int sum2 = 0;
    private static int sum = 0;

    public static void main(String[] args) throws InterruptedException {
        // 记录程序的执行时间
        long startTime = System.currentTimeMillis();

        // 1. 给定一个很长的数组（长度 1000w），通过随机数的方式生成 1-100 之间的整数
        int[] arr = new int[1000_0000];
        Random rand = new Random();
        for (int i = 0; i < arr.length; i++) {
            //  rand.nextInt(MAX - MIN + 1) + MIN;
            arr[i] = rand.nextInt(100) + 1;
        }

        // 2. 实现代码，能够创建两个线程，对这个数组的所有元素求和
        // 3. 其中线程1 计算偶数下标元素的和，线程2 计算奇数下标元素的和
        Thread t1 = new Thread(()->{
            for (int i = 0; i < arr.length; i++) {
                if(i % 2 == 0){
                    sum1 += arr[i];
                }
            }
        });
        Thread t2 = new Thread(()->{
            for (int i = 0; i < arr.length; i++) {
                if(i % 2 != 0){
                    sum2 += arr[i];
                }
            }
        });

        // 启动线程
        t1.start();
        t2.start();
        // 等待线程结束
        t1.join();
        t2.join();

        long endTime = System.currentTimeMillis();

        // 4. 最终再汇总两个和, 进行相加
        sum = sum1 + sum2;
        System.out.println("计算结果为：" + sum);
        System.out.println("总耗时：" + (endTime - startTime) + "ms");
    }

}
